<template>
  <Wrapper>
    <div class="merak-container-has-aside">
      <div class="merak-aside">
        <div class="merak-overflow-y">
          <div v-for="item in Array.from({ length: 50 }).map((_, i) => i + 1)" style="padding: 4px 10px">{{ item }}</div>
        </div>
      </div>
      <div class="merak-card merak-table-wrapper">
        <MerakXTable
          :columns-by-store="JSON.parse(JSON.stringify(state.columns))"
          :columns="state.columns"
          :data="state.data"
          :show-header="false"
          :pagination="false"
        />
      </div>
    </div>
  </Wrapper>
  <slot :html="html" />
</template>

<script setup lang="ts">
import { ref, reactive } from "vue";

import Wrapper from "./Wrapper.vue";

import MerakXTable, { MerakXTableColumn } from "../../../../../../components/MerakXTable";

const html = ref(`
<template>
  <Wrapper>
    <div class="merak-container-has-aside">
      <div class="merak-aside"></div>
      <div class="merak-card merak-table-wrapper">
        <MerakXTable
          :columns-by-store="JSON.parse(JSON.stringify(state.columns))"
          :columns="state.columns"
          :data="state.data"
          :show-header="false"
          :pagination="false"
        />
      </div>
    </div>
  </Wrapper>
</template>

<script setup lang="ts">
import { ref, reactive } from "vue";

import Wrapper from "./Wrapper.vue";

import MerakXTable, { MerakXTableColumn } from "../../../../../../components/MerakXTable";

const state = reactive<{
  columns: MerakXTableColumn[];
  data: Array<{ [k: string]: any }>;
}>({
  columns: [
    { field: "name", title: "Name" },
    { field: "age", title: "Age" },
    { field: "address", title: "Address" }
  ],
  data: [
    {
      id: "1",
      name: "John Brown",
      age: 32,
      address: "New York No. 1 Lake Park",
      description: "My name is John Brown, I am 32 years old, living in New York No. 1 Lake Park."
    },
    {
      id: "2",
      name: "Jim Green",
      age: 42,
      address: "London No. 1 Lake Park",
      description: "My name is Jim Green, I am 42 years old, living in London No. 1 Lake Park."
    },
    {
      id: "3",
      name: "Not Expandable",
      age: 29,
      address: "Jiangsu No. 1 Lake Park",
      description: "This not expandable"
    },
    {
      id: "4",
      name: "Joe Black",
      age: 32,
      address: "Sydney No. 1 Lake Park",
      description: "My name is Joe Black, I am 32 years old, living in Sydney No. 1 Lake Park."
    }
  ]
});
<\/script>
`);

const state = reactive<{
  columns: MerakXTableColumn[];
  data: Array<{ [k: string]: any }>;
}>({
  columns: [
    { field: "name", title: "Name" },
    { field: "age", title: "Age" },
    { field: "address", title: "Address" }
  ],
  data: [
    {
      id: "1",
      name: "John Brown",
      age: 32,
      address: "New York No. 1 Lake Park",
      description: "My name is John Brown, I am 32 years old, living in New York No. 1 Lake Park."
    },
    {
      id: "2",
      name: "Jim Green",
      age: 42,
      address: "London No. 1 Lake Park",
      description: "My name is Jim Green, I am 42 years old, living in London No. 1 Lake Park."
    },
    {
      id: "3",
      name: "Not Expandable",
      age: 29,
      address: "Jiangsu No. 1 Lake Park",
      description: "This not expandable"
    },
    {
      id: "4",
      name: "Joe Black",
      age: 32,
      address: "Sydney No. 1 Lake Park",
      description: "My name is Joe Black, I am 32 years old, living in Sydney No. 1 Lake Park."
    }
  ]
});
</script>
